package br.com.site.actions;

import java.util.List;

import org.apache.log4j.Logger;

import br.com.site.model.entity.ParametrosSistema;

public abstract class Listagem<T> extends MyActionSupport {

	private int pageatual;

	private List<T> lista;

	// Retorna a lista paginada
	/*
	 * public List<T> getLista() {
	 * 
	 * int numpaginas = lista.size()/pagesize;
	 * 
	 * 
	 * 
	 * if (pageatual > numpaginas ) pageatual = numpaginas -1;
	 * 
	 * if (pageatual <= 0) pageatual = 1;
	 * 
	 * int i = (pageatual-1)*pagesize;
	 * 
	 * 
	 * int j = (pageatual)*pagesize;
	 * 
	 * return lista.subList(i,j); }
	 */

	public abstract  List<T> listar() throws Exception;
	
	public String nextPage() throws Exception {

		pageatual++;
		lista = listar();
		return SUCCESS;

	}

	public String priorPage() throws Exception {

		pageatual--;
		lista = listar();
		return SUCCESS;
	}

	public int getPagesize() {
		List<ParametrosSistema> parametros = ParametrosSistema.find();
		if (!parametros.isEmpty()) {
			ParametrosSistema parametro = parametros.get(0);
			if (!(parametro.getTamListagem() == null || parametro
					.getTamListagem().isEmpty())) {
				try {
					return Integer.parseInt(parametro.getTamListagem());
				} catch (RuntimeException e) {
					e.printStackTrace();
				}
			}
		}
		return 10;
	}

	public int getPageatual() {
		return pageatual;
	}

	public void setPageatual(int pageatual) {
		this.pageatual = pageatual;
	}

	public List<T> getLista() {
		return lista;
	}

}
